package gt.edu.usac.model.eo;

import oracle.jbo.Key;
import oracle.jbo.RowIterator;
import oracle.jbo.RowSet;
import oracle.jbo.domain.DBSequence;
import oracle.jbo.domain.Date;
import oracle.jbo.domain.Number;
import oracle.jbo.server.AttributeDefImpl;
import oracle.jbo.server.EntityDefImpl;
import oracle.jbo.server.EntityImpl;
import oracle.jbo.server.SequenceImpl;
import oracle.jbo.server.TransactionEvent;
// ---------------------------------------------------------------------
// ---    File generated by Oracle ADF Business Components Design Time.
// ---    Custom code may be added to this class.
// ---    Warning: Do not modify method signatures of generated methods.
// ---------------------------------------------------------------------
public class CalPersonaImpl extends EntityImpl {
    public static final int IDPERSONA = 0;
    public static final int EMAIL = 1;
    public static final int TIPOPOBLACION = 2;
    public static final int NOMBRES = 3;
    public static final int APELLIDOS = 4;
    public static final int GENERO = 5;
    public static final int DIRECCION = 6;
    public static final int TELEFONO = 7;
    public static final int MOVIL = 8;
    public static final int FECHANACIMIENTO = 9;
    public static final int NACIONALIDAD = 10;
    public static final int REGISTROPERSONALUSAC = 11;
    public static final int CARNETUSAC = 12;
    public static final int PARTIDANACIMIENTOFOLIO = 13;
    public static final int PARTIDANACIMIENTOLIBRO = 14;
    public static final int PARTIDANACIMIENTOPARTIDA = 15;
    public static final int CUI = 16;
    public static final int CALPROFESOR = 17;
    public static final int CALTIPOPOBLACION = 18;
    public static final int CALINSCRIPCION = 19;
    public static final int CALACTANOTASDETALLE = 20;
    public static final int CALESTUDIANTE = 21;
    private static EntityDefImpl mDefinitionObject;

    /**This is the default constructor (do not remove)
     */
    public CalPersonaImpl() {
    }


    /**Retrieves the definition object for this instance class.
     */
    public static synchronized EntityDefImpl getDefinitionObject() {
        if (mDefinitionObject == null) {
            mDefinitionObject = (EntityDefImpl)EntityDefImpl.findDefObject("gt.edu.usac.model.eo.CalPersona");
        }
        return mDefinitionObject;
    }

    /**Gets the attribute value for IdPersona, using the alias name IdPersona
     */
    public DBSequence getIdPersona() {
        return (DBSequence)getAttributeInternal(IDPERSONA);
    }


    /**Gets the attribute value for Email, using the alias name Email
     */
    public String getEmail() {
        return (String)getAttributeInternal(EMAIL);
    }

    /**Sets <code>value</code> as the attribute value for Email
     */
    public void setEmail(String value) {
        setAttributeInternal(EMAIL, value);
    }

    /**Gets the attribute value for TipoPoblacion, using the alias name TipoPoblacion
     */
    public String getTipoPoblacion() {
        return (String)getAttributeInternal(TIPOPOBLACION);
    }

    /**Sets <code>value</code> as the attribute value for TipoPoblacion
     */
    public void setTipoPoblacion(String value) {
        setAttributeInternal(TIPOPOBLACION, value);
    }

    /**Gets the attribute value for Nombres, using the alias name Nombres
     */
    public String getNombres() {
        return (String)getAttributeInternal(NOMBRES);
    }

    /**Sets <code>value</code> as the attribute value for Nombres
     */
    public void setNombres(String value) {
        setAttributeInternal(NOMBRES, value);
    }

    /**Gets the attribute value for Apellidos, using the alias name Apellidos
     */
    public String getApellidos() {
        return (String)getAttributeInternal(APELLIDOS);
    }

    /**Sets <code>value</code> as the attribute value for Apellidos
     */
    public void setApellidos(String value) {
        setAttributeInternal(APELLIDOS, value);
    }

    /**Gets the attribute value for Genero, using the alias name Genero
     */
    public String getGenero() {
        return (String)getAttributeInternal(GENERO);
    }

    /**Sets <code>value</code> as the attribute value for Genero
     */
    public void setGenero(String value) {
        setAttributeInternal(GENERO, value);
    }

    /**Gets the attribute value for Direccion, using the alias name Direccion
     */
    public String getDireccion() {
        return (String)getAttributeInternal(DIRECCION);
    }

    /**Sets <code>value</code> as the attribute value for Direccion
     */
    public void setDireccion(String value) {
        setAttributeInternal(DIRECCION, value);
    }

    /**Gets the attribute value for Telefono, using the alias name Telefono
     */
    public String getTelefono() {
        return (String)getAttributeInternal(TELEFONO);
    }

    /**Sets <code>value</code> as the attribute value for Telefono
     */
    public void setTelefono(String value) {
        setAttributeInternal(TELEFONO, value);
    }

    /**Gets the attribute value for Movil, using the alias name Movil
     */
    public String getMovil() {
        return (String)getAttributeInternal(MOVIL);
    }

    /**Sets <code>value</code> as the attribute value for Movil
     */
    public void setMovil(String value) {
        setAttributeInternal(MOVIL, value);
    }

    /**Gets the attribute value for FechaNacimiento, using the alias name FechaNacimiento
     */
    public Date getFechaNacimiento() {
        return (Date)getAttributeInternal(FECHANACIMIENTO);
    }

    /**Sets <code>value</code> as the attribute value for FechaNacimiento
     */
    public void setFechaNacimiento(Date value) {
        setAttributeInternal(FECHANACIMIENTO, value);
    }

    /**Gets the attribute value for Nacionalidad, using the alias name Nacionalidad
     */
    public Number getNacionalidad() {
        return (Number)getAttributeInternal(NACIONALIDAD);
    }

    /**Sets <code>value</code> as the attribute value for Nacionalidad
     */
    public void setNacionalidad(Number value) {
        setAttributeInternal(NACIONALIDAD, value);
    }

    /**Gets the attribute value for RegistroPersonalUsac, using the alias name RegistroPersonalUsac
     */
    public Number getRegistroPersonalUsac() {
        return (Number)getAttributeInternal(REGISTROPERSONALUSAC);
    }

    /**Sets <code>value</code> as the attribute value for RegistroPersonalUsac
     */
    public void setRegistroPersonalUsac(Number value) {
        setAttributeInternal(REGISTROPERSONALUSAC, value);
    }

    /**Gets the attribute value for CarnetUsac, using the alias name CarnetUsac
     */
    public Number getCarnetUsac() {
        return (Number)getAttributeInternal(CARNETUSAC);
    }

    /**Sets <code>value</code> as the attribute value for CarnetUsac
     */
    public void setCarnetUsac(Number value) {
        setAttributeInternal(CARNETUSAC, value);
    }

    /**Gets the attribute value for PartidaNacimientoFolio, using the alias name PartidaNacimientoFolio
     */
    public String getPartidaNacimientoFolio() {
        return (String)getAttributeInternal(PARTIDANACIMIENTOFOLIO);
    }

    /**Sets <code>value</code> as the attribute value for PartidaNacimientoFolio
     */
    public void setPartidaNacimientoFolio(String value) {
        setAttributeInternal(PARTIDANACIMIENTOFOLIO, value);
    }

    /**Gets the attribute value for PartidaNacimientoLibro, using the alias name PartidaNacimientoLibro
     */
    public String getPartidaNacimientoLibro() {
        return (String)getAttributeInternal(PARTIDANACIMIENTOLIBRO);
    }

    /**Sets <code>value</code> as the attribute value for PartidaNacimientoLibro
     */
    public void setPartidaNacimientoLibro(String value) {
        setAttributeInternal(PARTIDANACIMIENTOLIBRO, value);
    }

    /**Gets the attribute value for PartidaNacimientoPartida, using the alias name PartidaNacimientoPartida
     */
    public String getPartidaNacimientoPartida() {
        return (String)getAttributeInternal(PARTIDANACIMIENTOPARTIDA);
    }

    /**Sets <code>value</code> as the attribute value for PartidaNacimientoPartida
     */
    public void setPartidaNacimientoPartida(String value) {
        setAttributeInternal(PARTIDANACIMIENTOPARTIDA, value);
    }

    /**Gets the attribute value for Cui, using the alias name Cui
     */
    public String getCui() {
        return (String)getAttributeInternal(CUI);
    }

    /**Sets <code>value</code> as the attribute value for Cui
     */
    public void setCui(String value) {
        setAttributeInternal(CUI, value);
    }

    /**getAttrInvokeAccessor: generated method. Do not modify.
     */
    protected Object getAttrInvokeAccessor(int index, 
                                           AttributeDefImpl attrDef) throws Exception {
        switch (index) {
        case IDPERSONA:
            return getIdPersona();
        case EMAIL:
            return getEmail();
        case TIPOPOBLACION:
            return getTipoPoblacion();
        case NOMBRES:
            return getNombres();
        case APELLIDOS:
            return getApellidos();
        case GENERO:
            return getGenero();
        case DIRECCION:
            return getDireccion();
        case TELEFONO:
            return getTelefono();
        case MOVIL:
            return getMovil();
        case FECHANACIMIENTO:
            return getFechaNacimiento();
        case NACIONALIDAD:
            return getNacionalidad();
        case REGISTROPERSONALUSAC:
            return getRegistroPersonalUsac();
        case CARNETUSAC:
            return getCarnetUsac();
        case PARTIDANACIMIENTOFOLIO:
            return getPartidaNacimientoFolio();
        case PARTIDANACIMIENTOLIBRO:
            return getPartidaNacimientoLibro();
        case PARTIDANACIMIENTOPARTIDA:
            return getPartidaNacimientoPartida();
        case CUI:
            return getCui();
        case CALINSCRIPCION:
            return getCalInscripcion();
        case CALPROFESOR:
            return getCalProfesor();
        case CALACTANOTASDETALLE:
            return getCalActaNotasDetalle();
        case CALESTUDIANTE:
            return getCalEstudiante();
        case CALTIPOPOBLACION:
            return getCalTipoPoblacion();
        default:
            return super.getAttrInvokeAccessor(index, attrDef);
        }
    }

    /**setAttrInvokeAccessor: generated method. Do not modify.
     */
    protected void setAttrInvokeAccessor(int index, Object value, 
                                         AttributeDefImpl attrDef) throws Exception {
        switch (index) {
        case IDPERSONA:
            setIdPersona((DBSequence)value);
            return;
        case EMAIL:
            setEmail((String)value);
            return;
        case TIPOPOBLACION:
            setTipoPoblacion((String)value);
            return;
        case NOMBRES:
            setNombres((String)value);
            return;
        case APELLIDOS:
            setApellidos((String)value);
            return;
        case GENERO:
            setGenero((String)value);
            return;
        case DIRECCION:
            setDireccion((String)value);
            return;
        case TELEFONO:
            setTelefono((String)value);
            return;
        case MOVIL:
            setMovil((String)value);
            return;
        case FECHANACIMIENTO:
            setFechaNacimiento((Date)value);
            return;
        case NACIONALIDAD:
            setNacionalidad((Number)value);
            return;
        case REGISTROPERSONALUSAC:
            setRegistroPersonalUsac((Number)value);
            return;
        case CARNETUSAC:
            setCarnetUsac((Number)value);
            return;
        case PARTIDANACIMIENTOFOLIO:
            setPartidaNacimientoFolio((String)value);
            return;
        case PARTIDANACIMIENTOLIBRO:
            setPartidaNacimientoLibro((String)value);
            return;
        case PARTIDANACIMIENTOPARTIDA:
            setPartidaNacimientoPartida((String)value);
            return;
        case CUI:
            setCui((String)value);
            return;
        default:
            super.setAttrInvokeAccessor(index, value, attrDef);
            return;
        }
    }


    /**Gets the associated entity CalTipoPoblacionImpl
     */
    public CalTipoPoblacionImpl getCalTipoPoblacion() {
        return (CalTipoPoblacionImpl)getAttributeInternal(CALTIPOPOBLACION);
    }

    /**Sets <code>value</code> as the associated entity CalTipoPoblacionImpl
     */
    public void setCalTipoPoblacion(CalTipoPoblacionImpl value) {
        setAttributeInternal(CALTIPOPOBLACION, value);
    }


    /**Sets <code>value</code> as the attribute value for IdPersona
     */
    public void setIdPersona(DBSequence value) {
        setAttributeInternal(IDPERSONA, value);
    }


    /**Gets the associated entity oracle.jbo.RowIterator
     */
    public RowIterator getCalProfesor() {
        return (RowIterator)getAttributeInternal(CALPROFESOR);
    }


    RowSet newPersonaBeforePost=null;
    public void postChanges(TransactionEvent TransactionEvent) {
      /* Only bother to update references if Persona is a NEW one */
      if (getPostState() == STATUS_NEW) {
        newPersonaBeforePost = (RowSet)getCalProfesor();
      }
      super.postChanges(TransactionEvent);
    }
    
    protected void refreshFKInNewContainees() {
      if (newPersonaBeforePost != null) {
        Number newPersona = this.getIdPersona().getSequenceNumber();
        while (newPersonaBeforePost.hasNext()) {
          CalProfesorImpl profesor =
            (CalProfesorImpl)newPersonaBeforePost.next();
          profesor.setIdPersona(newPersona);
        }
          newPersonaBeforePost.closeRowSet();
      }  
    }

    /**Gets the associated entity oracle.jbo.RowIterator
     */
    public RowIterator getCalInscripcion() {
        return (RowIterator)getAttributeInternal(CALINSCRIPCION);
    }


    /**Gets the associated entity oracle.jbo.RowIterator
     */
    public RowIterator getCalActaNotasDetalle() {
        return (RowIterator)getAttributeInternal(CALACTANOTASDETALLE);
    }

    /**Gets the associated entity oracle.jbo.RowIterator
     */
    public RowIterator getCalEstudiante() {
        return (RowIterator)getAttributeInternal(CALESTUDIANTE);
    }

    /**Creates a Key object based on given key constituents
     */
    public static Key createPrimaryKey(DBSequence idPersona) {
        return new Key(new Object[]{idPersona});
    }
}
